package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"html/template"
	"net/http"
	"time"
)

// UnixToTime
//
//	@Description: 时间戳转换为时间字符串
//	@param timestamp
//	@return string
func UnixToTime(timestamp int64) string {
	return time.Unix(timestamp, 0).Format("2006-01-02 15:04:05")
}

// GetDouble
//
//	@Description: 获得两倍大小的数
//	@param num
//	@return int
func GetDouble(num int) int {
	return num * 2
}

// main
//
//	@Description: 全局中间件
func main() {
	r := gin.Default()

	//设置自定义模板函数
	r.SetFuncMap(template.FuncMap{
		"UnixToTime": UnixToTime, //注册模板函数
		"GetDouble":  GetDouble,  //注册模板函数
	})
	r.LoadHTMLGlob("templates/**/*")
	r.Static("/static", "./static")
	//配置路由
	//routers2.UserRouters(r)
	//routers2.CarRouters(r)

	//使用全局中间件的执行顺序~：
	//全局中间件1-start...
	//全局中间件2-start...
	//全局中间件3-start...
	//商品页被访问...
	//全局中间件3-end...
	//全局中间件2-end...
	//全局中间件1-end...

	//使用定义的三个中间件，所有的路由都会经过三个中间件
	r.Use(GMiddleWare01, GMiddleWare02, GMiddleWareEnd)
	r.GET("/goods", func(c *gin.Context) {
		fmt.Println("商品页被访问...")
		c.String(http.StatusOK, "goods首页")
	})

	r.Run(":8888")
}

func GMiddleWare01(c *gin.Context) {
	fmt.Println("全局中间件1-start...")
	c.Next()
	fmt.Println("全局中间件1-end...")
}

func GMiddleWare02(c *gin.Context) {
	fmt.Println("全局中间件2-start...")
	c.Next()
	fmt.Println("全局中间件2-end...")
}

func GMiddleWareEnd(c *gin.Context) {
	fmt.Println("全局中间件3-start...")
	c.Next()
	fmt.Println("全局中间件3-end...")
}
